package idea.innovacion.dao;

import idea.innovacion.bean.PerfilDTO;
import idea.innovacion.interfaces.IPerfilDAO;
import idea.innovacion.util.ConexionDB;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

public class MySqlPerfilDAO  implements IPerfilDAO {
	

	@Override
	public int buscarPorURL(String nombre, String url) throws SQLException {
		Integer retorno = null;		
		String sql = null;
		Connection conn = null;
		sql = "select COUNT(idperfil) AS contador from perfil where nombreCentro= ? or url = ?";
		ResultSet rs = null;
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setString(1,nombre);
		pstm.setString(2,url);
		rs = pstm.executeQuery();
		if(rs.next()){
			retorno = rs.getInt("contador");
		}
		return retorno;
	}

	@Override
	public boolean insertPerfil(PerfilDTO dto) throws SQLException {
		boolean retorno;		
		String sql = null;
		Connection conn = null;
		sql = "INSERT Perfil VALUES (?,?,?,?,?)";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);
		pstm.setInt(1, dto.getIdPerfil());
		pstm.setString(2, dto.getNombreCentro());
		pstm.setString(3, dto.getUrl());
		pstm.setString(4, dto.getLogo());
		pstm.setString(5, dto.getTipo());

		retorno = pstm.execute();
		
		return retorno;
		
	}
	
	@Override
	public int updatePerfil(PerfilDTO dto) throws SQLException {
		int retorno;		
		String sql = null;
		Connection conn = null;
		sql = "UPDATE Perfil SET nombreCentro=?, url=?, logo=?, tipo=? WHERE idPerfil=?";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);		
		pstm.setString(1, dto.getNombreCentro());
		pstm.setString(2, dto.getUrl());
		pstm.setString(3, dto.getLogo());
		pstm.setString(4, dto.getTipo());
		pstm.setInt(5, dto.getIdPerfil());

		retorno = pstm.executeUpdate();
		
		return retorno;
		
	}
	
	@Override
	public void deletePerfil(PerfilDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ArrayList<PerfilDTO> listPerfil(PerfilDTO perfil) throws SQLException {
		// TODO Auto-generated method stub
		String sql = null;
		ArrayList<PerfilDTO> listTemp = new ArrayList<PerfilDTO>();
		ResultSet rs;
		Connection conn = null;
		sql = "SELECT idPerfil, nombreCentro, url, logo, tipo, (idPerfil*100) AS pago FROM perfil";
		
        conn = ConexionDB.GetConnection();
		
		PreparedStatement pstm = conn.prepareStatement(sql);		
		//pstm.setInt(1, perfil.getIdPerfil());
		
		//Ejecutamos El Query		
		rs = pstm.executeQuery(sql);
		
		//Recorremos el ResultSet
		while(rs.next()) {
			//Lo guardamos en un objeto
			PerfilDTO p = new PerfilDTO();
			int idPerfil;
			String nombreCentro;
			String url;
			String logo;
			String tipo;
			double pago;
			
			//Obtenemos Datos del Resul Set
			idPerfil = rs.getInt(1);
			nombreCentro = rs.getString(2);
			url = rs.getString(3);
			logo = rs.getString(4);
			tipo = rs.getString(5);
			pago = rs.getDouble(6);
			
			//Lo Guardamos en Objeto temporal
			p.setIdPerfil(idPerfil);
			p.setNombreCentro(nombreCentro);
			p.setUrl(url);
			p.setLogo(logo);
			p.setTipo(tipo);
			p.setPago(pago);
			
			//Lo agregamos a la lista temporal
			listTemp.add(p);
			
			
		
		}
		
		
		return listTemp;
	}

}
